<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
  <title>bdep-sync(1) bdep 0.17.0</title>

  <style type="text/css">
/* file      : common.css
 * license   : MIT; see accompanying LICENSE file
 */

html
{
  font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
  font-weight: normal;
  font-size: 18px;
  line-height: 1.4em;
  letter-spacing: 0.01em;

  color: #292929;
}

body {margin: 0;} /* There is non-0 default margin for body. */

/* See notes on what's going on here. */
body {min-width: 17em;}
@media only screen and (min-width: 360px)
{
  body {min-width: 19em;}
}

/*
 * Header (optional).
 */

#header-bar
{
  width: 100%;

  background: rgba(0, 0, 0, 0.04);
  border-bottom: 1px solid rgba(0, 0, 0, 0.2);

  padding: .4em 0 .42em 0;
  margin: 0 0 1.4em 0;
}

#header
{
  /* Same as in #content. */
  max-width: 41em;
  margin: 0 auto 0 auto;
  padding: 0 .4em 0 .4em;

  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;

  width: 100%;
  display: table;
  border: none;
  border-collapse: collapse;
}

#header-logo, #header-menu
{
  display: table-cell;
  border: none;
  padding: 0;
  vertical-align: middle;
}

#header-logo {text-align: left;}
#header-menu {text-align: right;}

/* These overlap with #header's margin because of border collapsing. */
#header-logo {padding-left: .4em;}
#header-menu {padding-right: .4em;}

#header-logo a
{
  color: #000;
  text-decoration: none;
  outline: none;
}
#header-logo a:visited {color: #000;}
#header-logo a:hover, #header-logo a:active {color: #000;}

#header-menu a
{
  font-size: 0.889em;
  line-height: 1.4em;
  text-align: right;
  margin-left: 1.2em;
  white-space: nowrap;
  letter-spacing: 0;
}

#header-menu a
{
  color: #000;
  outline: none;
}
#header-menu a:visited {color: #000;}
#header-menu a:hover, #header-menu a:active
{
  color: #3870c0;
  text-decoration: none;
}

/* Flexbox-based improvements though the above works reasonably well. */
#header-menu-body
{
  width: 100%;

  display: -webkit-inline-flex;
  display: inline-flex;

  -webkit-flex-flow: row wrap;
  flex-flow: row wrap;

  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}

/* Whether we want it (and at which point) depends on the size of the menu. */
/*
@media only screen and (max-width: 567px)
{
  #header-menu-body
  {
    -webkit-flex-direction: column;
    flex-direction: column;
  }
}
*/

/*
 * Content.
 */

#content
{
  max-width: 41em;
  margin: 0 auto 0 auto;
  padding: 0 .4em 0 .4em; /* Space between text and browser frame. */

  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/*
 * Footer (optional).
 */

#footer
{
  color: #767676;
  font-size: 0.7223em;
  line-height: 1.3em;
  margin: 2.2em 0 1em 0;
  text-align: center;
}

#footer a
{
  color: #767676;
  text-decoration: underline;
}
#footer a:visited {color: #767676;}
#footer a:hover, #footer a:active {color: #3870c0;}

/* Screen size indicator in the footer. The before/after content is in case
   we don't have any content in the footer. Margin is to actually see the
   border separate from the browser frame. */

/*
#footer:before {content: "\A0";}
#footer:after {content: "\A0";}

#footer
{
  border-left: 1px solid;
  border-right: 1px solid;
  margin-left: 1px;
  margin-right: 1px;
}

@media only screen and (max-width: 359px)
{
  #footer {border-color: red;}
}

@media only screen and (min-width: 360px) and (max-width: 567px)
{
  #footer {border-color: orange;}
}

@media only screen and (min-width: 568px) and (max-width: 1023px)
{
  #footer {border-color: blue;}
}

@media only screen and (min-width: 1024px)
{
  #footer {border-color: green;}
}
*/

/*
 * Common elements.
 */

p, li, dd {text-align: justify;}
.code {text-align: left;} /* Manually aligned. */
pre {text-align: left;}   /* If it is inside li/dd. */

/* Notes. */

.note
{
  color: #606060;
}

div.note
{
  margin: 2em 0 2em 0; /* The same top/bottom margings as pre box. */

  padding-left: 0.5em;
  border: 0.25em;
  border-left-style: solid;
  border-color: #808080;

  page-break-inside: avoid;
}

div.note :first-child {margin-top:    0;}
div.note :last-child  {margin-bottom: 0;}

span.note::before {content: "[Note: "}
span.note::after  {content: "]"}

/* Links. */
a
{
  color: #3870c0;
  /*color: #4078c0;*/
  text-decoration: none;
}

a:hover, a:active
{
/*color: #006fbf;*/
/*color: #0087e7;*/
  text-decoration: underline;
}

a:visited
{
/*color: #003388;*/
  color: #00409c;
}

/* Standard paragraph. */

p, pre {margin: 1em 0 1em 0;}

/* Standard lists. */
ul, ol, dl {margin: 1em 0 1em 0;}
ul li, ol li {margin: 0 0 .4em 0;}
ul li {list-style-type: circle;}
dl dt {margin: 0 0 0 0;}
dl dd {margin: 0 0 .6em 1.8em;}

code, pre
{
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: 0.92em;
  letter-spacing: 0;
}

pre {white-space: pre-wrap;}
@media only screen and (max-width: 567px)
{
  pre {word-break: break-all;}
}

/* Use page rather than system font settings. */
input
{
  font-family: inherit;
  font-weight: inherit;
  font-size:   inherit;
  line-height: inherit;
}

/* file      : pre-box.css
 * license   : MIT; see accompanying LICENSE file
 */

/* Note: see also p-code-box.css. */

pre
{
  background-color: rgba(0, 0, 0, 0.05);
  border-radius: 0.2em;
  padding: .8em .4em .8em .4em;
  margin: 2em -.4em 2em -.4em; /* Use margins of #content. */
}

/* file      : man.css
 * license   : MIT; see accompanying LICENSE file
 */

/* Bases:
 *
 * common.css
 * pre-box.css
 *
 */

#content
{
  max-width: 42.1em;
  padding-left: 1.5em; /* Reserve for the heading. */
}

h1
{
  font-weight: normal;
  font-size: 1.58em;
  line-height: 1.4em;
  margin: 1.6em 0 .6em -.88em;
}

/* Definition list for options. */
dl.options dt {margin: 1em 0 0 0;}
dl.options dd {margin: .1em 0 0 4.5em;}

/* Make lists inside option descriptions a tad smaller. */
dl.options dd ul, dl.options dd ol, dl.options dd dl
{
  font-size: 0.889em;
  line-height: 1.4em;
}

  </style>

</head>
<body>
<div id="content">

  <h1>NAME</h1>

  <p><b><code>bdep-sync</code></b> &#8211; synchronize project and build configurations</p>
  <h1>SYNOPSIS</h1>

  <p class="code"><code><b>bdep sync</b> [<i>options</i>] [<i>pkg-spec</i>]
  [<i>cfg-spec</i>] [<i>pkg-args</i>]
  <br/>
  <b>bdep sync</b> [<i>options</i>] [<i>pkg-spec</i>] [<i>cfg-spec</i>]
  &#160;<b>--upgrade</b>|<b>-u</b> | <b>--patch</b>|<b>-p</b>
  <br/>
  <b>bdep sync</b> [<i>options</i>] [<i>pkg-spec</i>] [<i>cfg-spec</i>]
  [<b>--upgrade</b>|<b>-u</b> | <b>--patch</b>|<b>-p</b>]
  <br/>
  &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<i>dep-spec</i>...
  [<i>cfg-var</i>...] </code></p>

  <p class="code"><code><i>dep-spec</i> = <i>pkg</i>[<b>/</b><i>ver</i>]
  <br/>
  <i>cfg-spec</i> = (<b>@</b><i>cfg-name</i> | <b>--config</b>|<b>-c</b>
  <i>cfg-dir</i>)... | <b>--all</b>|<b>-a</b>
  <br/>
  <i>pkg-spec</i> = (<b>--directory</b>|<b>-d</b> <i>pkg-dir</i>)... |
  <i>prj-spec</i>
  <br/>
  <i>prj-spec</i> = <b>--directory</b>|<b>-d</b> <i>prj-dir</i>
  <br/>
  <i>pkg-args</i> = (<b>?</b><i>pkg</i> | <i>cfg-var</i>)...</code></p>

  <h1>DESCRIPTION</h1>

  <p>The <code><b>sync</b></code> command synchronizes a project with its
  build configurations. The first form (no <code><b>--upgrade</b></code> or
  <code><b>--patch</b></code> and only <code><i>pkg-args</i></code> arguments,
  if any, are specified) upgrades the project packages to the latest
  version/iteration, adjusts their dependencies according to the latest
  manifest information, and updates the lockfile.</p>

  <p>If no project or package directory is specified, then the current working
  directory is assumed. If no configuration is specified, then the default
  configurations are assumed. See <a
  href="bdep-projects-configs.xhtml"><code><b>bdep-projects-configs(1)</b></code></a>
  for details on specifying projects and configurations. Optional
  <code><i>pkg-args</i></code> are the additional dependency packages and/or
  configuration variables to pass to the underlying <a
  href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
  command.</p>

  <p>The second form (no arguments but either <code><b>--upgrade</b></code> or
  <code><b>--patch</b></code> is specified), in addition to the first form's
  functionality, also upgrades or patches immediate (by default or if
  <code><b>--immediate</b>|<b>-i</b></code> is specified) or all (if
  <code><b>--recursive</b>|<b>-r</b></code> is specified) dependencies of the
  specified project packages. If no project packages are specified explicitly,
  then this form upgrades or patches dependencies of all the initialized
  packages in a project.</p>

  <p>The third form (one or more <code><i>dep-spec</i></code> arguments are
  specified), in addition to the first form's functionality, also upgrades (by
  default or if <code><b>--upgrade</b></code> is specified) or patches (if
  <code><b>--patch</b></code> is specified) the specified dependencies. If
  <code><b>--immediate</b>|<b>-i</b></code> or
  <code><b>--recursive</b>|<b>-r</b></code> is specified, then it also
  upgrades or patches the immediate or all dependencies of the specified
  dependencies, respectively. Alternative to <code><b>--upgrade</b></code> and
  <code><b>--patch</b></code>, the desired upgrade (or downgrade) version can
  be specified explicitly.</p>

  <p>Note also that <code><b>--immediate</b>|<b>-i</b></code> or
  <code><b>--recursive</b>|<b>-r</b></code> can only be specified with an
  explicit <code><b>--upgrade</b></code> or <code><b>--patch</b></code>.</p>

  <p>Configuration variables can be specified to only apply to specific
  packages in <code><i>pkg-args</i></code> and <code><i>dep-spec</i></code>
  using the argument grouping mechanism (<a
  href="bdep-argument-grouping.xhtml"><code><b>bdep-argument-grouping(1)</b></code></a>).
  Additionally, packages in <code><i>pkg-args</i></code> can be placed into
  specific linked configurations by specifying the configuration with one of
  the <code><b>--config*</b></code> options (or <code><b>@</b></code>
  notation) using the same grouping mechanism.</p>

  <p>If during synchronization a build-time dependency is encountered and
  there is no build configuration of a suitable type associated with the
  project, then the user is prompted (unless the respective
  <code><b>--create-*-config</b></code> option is specified) to automatically
  create such a configuration and associate it with the project. See <a
  href="../../bpkg/doc/bpkg-cfg-create.xhtml"><code><b>bpkg-cfg-create(1)</b></code></a>
  for background on configuration types.</p>

  <h1>EXAMPLES</h1>

  <p>As an example, consider project <code><b>prj</b></code> with two
  packages, <code><b>foo</b></code> and <code><b>libfoo</b></code>:</p>

  <pre>prj/
├── foo/
└── libfoo/</pre>

  <p>Assuming <code><b>foo</b></code> and <code><b>libfoo</b></code> have been
  initialized in the default build configuration, the following invocations
  illustrate the common <code><b>sync</b></code> use cases (the current
  working directory is shown before the shell prompt).</p>

  <p>Synchronize <code><b>foo</b></code> and <code><b>libfoo</b></code> with
  the default configuration:</p>

  <pre>prj/$ bdep sync</pre>

  <p>The same (all initialized packages in a project are always synchronized
  at once):</p>

  <pre>prj/$ cd foo
foo/$ bdep sync</pre>

  <p>Add a dependency on <code><b>libx</b></code> with
  <code><b>sync</b></code> fetching and configuring a suitable version:</p>

  <pre>foo/$ edit manifest  # Add 'depends: libx ^1.0.0'
foo/$ bdep sync</pre>

  <p>Upgrade all the immediate dependencies of <code><b>foo</b></code>:</p>

  <pre>foo/$ bdep sync -u</pre>

  <p>Upgrade all the dependencies of all the initialized packages in a project
  recursively:</p>

  <pre>foo/$ cd ../
prj/$ bdep sync -u -r</pre>

  <p>Upgrade <code><b>libx</b></code> to the latest version:</p>

  <pre>prj/$ bdep sync libx</pre>

  <p>Upgrade <code><b>libx</b></code> and its immediate dependencies to the
  latest version:</p>

  <pre>prj/$ bdep sync -u -i libx</pre>

  <p>Upgrade <code><b>libx</b></code> to the latest patch version:</p>

  <pre>prj/$ bdep sync -p libx</pre>

  <p>Upgrade <code><b>libx</b></code> and all its dependencies recursively to
  the latest patch version.</p>

  <pre>prj/$ bdep sync -p -r libx</pre>

  <p>Upgrade <code><b>libx</b></code> to version
  <code><b>1.2.3</b></code>.</p>

  <pre>prj/$ bdep sync libx/1.2.3</pre>

  <p>Upgrade <code><b>libx</b></code> to version <code><b>1.2.3</b></code> and
  patch all its dependencies, recursively:</p>

  <pre>prj/$ bdep sync -p -r libx/1.2.3</pre>

  <h1>SYNC OPTIONS</h1>

  <dl class="options">
    <dt><code><b>--upgrade</b></code>|<code><b>-u</b></code></dt>
    <dd>Upgrade dependencies to the latest available version that satisfies
    all the constraints.</dd>

    <dt><code><b>--patch</b></code>|<code><b>-p</b></code></dt>
    <dd>Upgrade dependencies to the latest available patch version that
    satisfies all the constraints.</dd>

    <dt><code><b>--immediate</b></code>|<code><b>-i</b></code></dt>
    <dd>Also upgrade or patch immediate dependencies.</dd>

    <dt><code><b>--recursive</b></code>|<code><b>-r</b></code></dt>
    <dd>Also upgrade or patch all dependencies, recursively.</dd>

    <dt><code><b>--yes</b></code>|<code><b>-y</b></code></dt>
    <dd>Don't prompt for confirmation when up/down-grading dependencies.</dd>

    <dt><code><b>--disfigure</b></code></dt>
    <dd>Disfigure project packages during synchronization effectively causing
    their from-scratch reconfiguration.</dd>

    <dt><code><b>--fetch</b></code>|<code><b>-f</b></code></dt>
    <dd>Perform the <code><b>fetch</b></code> command prior to
    synchronization.</dd>

    <dt><code><b>--fetch-full</b></code>|<code><b>-F</b></code></dt>
    <dd>Perform the <code><b>fetch --full</b></code> command prior to
    synchronization.</dd>

    <dt><code><b>--sys-no-query</b></code></dt>
    <dd>Do not query the system package manager for the installed versions of
    packages specified with the <code><b>sys</b></code> scheme. See the
    corresponding <a
    href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
    option for details.</dd>

    <dt><code><b>--sys-install</b></code></dt>
    <dd>Instruct the system package manager to install available versions of
    packages specified with the <code><b>sys</b></code> scheme that are not
    already installed. See the corresponding <a
    href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
    option for details.</dd>

    <dt><code><b>--sys-no-fetch</b></code></dt>
    <dd>Do not fetch the system package manager metadata before querying for
    available versions of packages specified with the <code><b>sys</b></code>
    scheme. See the corresponding <a
    href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
    option for details.</dd>

    <dt><code><b>--sys-no-stub</b></code></dt>
    <dd>Do no require a stub for packages specified with the
    <code><b>sys</b></code> scheme. See the corresponding <a
    href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
    option for details.</dd>

    <dt><code><b>--sys-yes</b></code></dt>
    <dd>Assume the answer to the system package manager prompts is
    <code><b>yes</b></code>. See the corresponding <a
    href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
    option for details.</dd>

    <dt><code><b>--sys-sudo</b></code> <code><i>prog</i></code></dt>
    <dd>The <code><b>sudo</b></code> program to use for system package manager
    interactions that normally require administrative privileges (fetch
    package metadata, install packages, etc). See the corresponding <a
    href="../../bpkg/doc/bpkg-pkg-build.xhtml"><code><b>bpkg-pkg-build(1)</b></code></a>
    option for details.</dd>

    <dt><code><b>--create-host-config</b></code></dt>
    <dd>Create a configuration for build-time dependencies without
    prompt.</dd>

    <dt><code><b>--create-build2-config</b></code></dt>
    <dd>Create a configuration for build system module dependencies without
    prompt.</dd>

    <dt><code><b>--implicit</b></code></dt>
    <dd>Perform implicit synchronization. This mode is normally used by other
    tools (for example, a build system hook) to ensure projects and
    configurations are synchronized. To improve performance, especially for
    the "everything is already synchronized" case, <code><b>sync</b></code>
    executed in this mode assumes that no configuration flags (see <a
    href="bdep-config.xhtml"><code><b>bdep-config(1)</b></code></a>) have
    changed since the last explicit synchronization. It also does not search
    for a project in the current working directory &#8211; if any, its
    directory should be specified explicitly with
    <code><b>--config</b>|<b>-c</b></code>.</dd>

    <dt><code><b>--all</b></code>|<code><b>-a</b></code></dt>
    <dd>Use all build configurations.</dd>

    <dt><code><b>--config</b></code>|<code><b>-c</b></code> <code><i>dir</i></code></dt>
    <dd>Specify the build configuration as a directory.</dd>

    <dt><code><b>--directory</b></code>|<code><b>-d</b></code> <code><i>dir</i></code></dt>
    <dd>Assume project/package is in the specified directory rather than in
    the current working directory.</dd>

    <dt><code><b>--config-name</b></code>|<code><b>-n</b></code> <code><i>name</i></code></dt>
    <dd>Specify the build configuration as a name.</dd>

    <dt><code><b>--config-id</b></code> <code><i>num</i></code></dt>
    <dd>Specify the build configuration as an id.</dd>
  </dl>

  <h1>COMMON OPTIONS</h1>

  <p>The common options are summarized below with a more detailed description
  available in <a
  href="bdep-common-options.xhtml"><code><b>bdep-common-options(1)</b></code></a>.</p>

  <dl class="options">
    <dt><code><b>-v</b></code></dt>
    <dd>Print essential underlying commands being executed.</dd>

    <dt><code><b>-V</b></code></dt>
    <dd>Print all underlying commands being executed.</dd>

    <dt><code><b>--quiet</b></code>|<code><b>-q</b></code></dt>
    <dd>Run quietly, only printing error messages.</dd>

    <dt><code><b>--verbose</b></code> <code><i>level</i></code></dt>
    <dd>Set the diagnostics verbosity to <code><i>level</i></code> between 0
    and 6.</dd>

    <dt><code><b>--stdout-format</b></code> <code><i>format</i></code></dt>
    <dd>Representation format to use for printing to
    <code><b>stdout</b></code>.</dd>

    <dt><code><b>--jobs</b></code>|<code><b>-j</b></code> <code><i>num</i></code></dt>
    <dd>Number of jobs to perform in parallel.</dd>

    <dt><code><b>--progress</b></code></dt>
    <dd>Display progress indicators for long-lasting operations, such as
    network transfers, building, etc.</dd>

    <dt><code><b>--no-progress</b></code></dt>
    <dd>Suppress progress indicators for long-lasting operations, such as
    network transfers, building, etc.</dd>

    <dt><code><b>--diag-color</b></code></dt>
    <dd>Use color in diagnostics.</dd>

    <dt><code><b>--no-diag-color</b></code></dt>
    <dd>Don't use color in diagnostics.</dd>

    <dt><code><b>--bpkg</b></code> <code><i>path</i></code></dt>
    <dd>The package manager program to be used for build configuration
    management.</dd>

    <dt><code><b>--bpkg-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the package manager program.</dd>

    <dt><code><b>--build</b></code> <code><i>path</i></code></dt>
    <dd>The build program to be used to build packages.</dd>

    <dt><code><b>--build-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the build program.</dd>

    <dt><code><b>--curl</b></code> <code><i>path</i></code></dt>
    <dd>The curl program to be used for network operations.</dd>

    <dt><code><b>--curl-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the curl program.</dd>

    <dt><code><b>--pager</b></code> <code><i>path</i></code></dt>
    <dd>The pager program to be used to show long text.</dd>

    <dt><code><b>--pager-option</b></code> <code><i>opt</i></code></dt>
    <dd>Additional option to be passed to the pager program.</dd>

    <dt><code><b>--options-file</b></code> <code><i>file</i></code></dt>
    <dd>Read additional options from <code><i>file</i></code>.</dd>

    <dt><code><b>--default-options</b></code> <code><i>dir</i></code></dt>
    <dd>The directory to load additional default options files from.</dd>

    <dt><code><b>--no-default-options</b></code></dt>
    <dd>Don't load default options files.</dd>
  </dl>

  <h1>DEFAULT OPTIONS FILES</h1>

  <p>See <a
  href="bdep-default-options-files.xhtml"><code><b>bdep-default-options-files(1)</b></code></a>
  for an overview of the default options files. For the
  <code><b>sync</b></code> command the search start directory is the project
  directory, except for the implicit mode for which only the predefined
  directories (system, etc) are searched in. The following options files are
  searched for in each directory and, if found, loaded in the order
  listed:</p>

  <pre>bdep.options
bdep-{sync|sync-implicit}.options # (mode-dependent)</pre>

  <p>The following <code><b>sync</b></code> command options cannot be
  specified in the default options files:</p>

  <pre>--directory|-d
--implicit
--config|-c</pre>

  <h1>ENVIRONMENT</h1>

  <p>The <code><b>BDEP_SYNC</b></code> environment variable can be used to
  suppress automatic synchronization on build system invocation. If set,
  auto-synchronization will only be performed if the variable's value is
  <code><b>true</b></code> or <code><b>1</b></code>. The ability to suppress
  auto-synchronization can be useful when you don't have usable
  <code><b>bdep</b></code> and/or <code><b>bpkg</b></code>.</p>

  <p>To avoid recursive re-synchronization, the <code><b>sync</b></code>
  command also maintains the <code><b>BDEP_SYNCED_CONFIGS</b></code>
  environment variable. It contains a space-separated,
  <code><b>"</b></code>-quoted list of configuration paths that have been or
  are being synchronized by the current <code><b>bdep</b></code> invocation
  chain. The <code><b>sync</b></code> command examines this variable and
  silently ignores synchronization requests that have been or are already
  being performed.</p>

  <h1>BUGS</h1>

  <p>Send bug reports to the
  <a href="mailto:users@build2.org">users@build2.org</a> mailing list.</p>

</div>

<div id="footer">
Copyright &#169; 2014-2024 the build2 authors.<br/>
Permission is granted to copy, distribute and/or modify this document under
the terms of the MIT License.
</div>

</body>
</html>
